home *** CD-ROM | disk | FTP | other *** search
/ Rock County Sheriff's Off…nternet Safety Initative / Rock County Sher.iso / pc / css / styles / jPlayer.swf / scripts / Jplayer.as
Encoding:
Text File  |  2012-09-13  |  17.7 KB  |  446 lines

  1. package
  2. {
  3.    import flash.display.Sprite;
  4.    import flash.display.StageAlign;
  5.    import flash.display.StageScaleMode;
  6.    import flash.events.ContextMenuEvent;
  7.    import flash.events.Event;
  8.    import flash.events.KeyboardEvent;
  9.    import flash.events.MouseEvent;
  10.    import flash.events.TimerEvent;
  11.    import flash.external.ExternalInterface;
  12.    import flash.net.URLRequest;
  13.    import flash.net.navigateToURL;
  14.    import flash.system.Security;
  15.    import flash.text.TextField;
  16.    import flash.ui.ContextMenu;
  17.    import flash.ui.ContextMenuItem;
  18.    import flash.utils.Timer;
  19.    import happyworm.jPlayer.*;
  20.    
  21.    public class Jplayer extends Sprite
  22.    {
  23.       private var jQuery:String;
  24.       
  25.       private var sentNumberFractionDigits:uint = 2;
  26.       
  27.       public var commonStatus:JplayerStatus = new JplayerStatus();
  28.       
  29.       private var myInitTimer:Timer = new Timer(100,0);
  30.       
  31.       private var myMp3Player:JplayerMp3;
  32.       
  33.       private var myMp4Player:JplayerMp4;
  34.       
  35.       private var isMp3:Boolean = false;
  36.       
  37.       private var isVideo:Boolean = false;
  38.       
  39.       private var txLog:TextField;
  40.       
  41.       private var debug:Boolean = false;
  42.       
  43.       public function Jplayer()
  44.       {
  45.          super();
  46.          Security.allowDomain("*");
  47.          this.jQuery = loaderInfo.parameters.jQuery + "(\'#" + loaderInfo.parameters.id + "\').jPlayer";
  48.          this.commonStatus.volume = Number(loaderInfo.parameters.vol);
  49.          this.commonStatus.muted = loaderInfo.parameters.muted == "true";
  50.          stage.scaleMode = StageScaleMode.NO_SCALE;
  51.          stage.align = StageAlign.TOP_LEFT;
  52.          stage.addEventListener(Event.RESIZE,this.resizeHandler);
  53.          stage.addEventListener(MouseEvent.CLICK,this.clickHandler);
  54.          var _loc1_:Number = this.commonStatus.volume;
  55.          if(this.commonStatus.muted)
  56.          {
  57.             _loc1_ = 0;
  58.          }
  59.          this.myMp3Player = new JplayerMp3(_loc1_);
  60.          addChild(this.myMp3Player);
  61.          this.myMp4Player = new JplayerMp4(_loc1_);
  62.          addChild(this.myMp4Player);
  63.          this.setupListeners(!this.isMp3,this.isMp3);
  64.          var _loc2_:ContextMenu = new ContextMenu();
  65.          _loc2_.hideBuiltInItems();
  66.          var _loc3_:ContextMenuItem = new ContextMenuItem("jPlayer " + JplayerStatus.VERSION);
  67.          var _loc4_:ContextMenuItem = new ContextMenuItem("┬⌐ 2009-2011 Happyworm Ltd",true);
  68.          _loc3_.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,this.menuSelectHandler_jPlayer);
  69.          _loc4_.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT,this.menuSelectHandler_happyworm);
  70.          _loc2_.customItems.push(_loc3_,_loc4_);
  71.          contextMenu = _loc2_;
  72.          if(this.debug)
  73.          {
  74.             this.txLog = new TextField();
  75.             this.txLog.x = 5;
  76.             this.txLog.y = 5;
  77.             this.txLog.width = 540;
  78.             this.txLog.height = 390;
  79.             this.txLog.border = true;
  80.             this.txLog.background = true;
  81.             this.txLog.backgroundColor = 15658751;
  82.             this.txLog.multiline = true;
  83.             this.txLog.text = "jPlayer " + JplayerStatus.VERSION;
  84.             this.txLog.visible = false;
  85.             this.addChild(this.txLog);
  86.             this.stage.addEventListener(KeyboardEvent.KEY_UP,this.keyboardHandler);
  87.             this.myMp3Player.addEventListener(JplayerEvent.DEBUG_MSG,this.debugMsgHandler);
  88.             this.myMp4Player.addEventListener(JplayerEvent.DEBUG_MSG,this.debugMsgHandler);
  89.          }
  90.          this.myInitTimer.addEventListener(TimerEvent.TIMER,this.init);
  91.          this.myInitTimer.start();
  92.       }
  93.       
  94.       private function init(param1:TimerEvent) : void
  95.       {
  96.          this.myInitTimer.stop();
  97.          if(ExternalInterface.available)
  98.          {
  99.             ExternalInterface.addCallback("fl_setAudio_mp3",this.fl_setAudio_mp3);
  100.             ExternalInterface.addCallback("fl_setAudio_m4a",this.fl_setAudio_m4a);
  101.             ExternalInterface.addCallback("fl_setVideo_m4v",this.fl_setVideo_m4v);
  102.             ExternalInterface.addCallback("fl_clearMedia",this.fl_clearMedia);
  103.             ExternalInterface.addCallback("fl_load",this.fl_load);
  104.             ExternalInterface.addCallback("fl_play",this.fl_play);
  105.             ExternalInterface.addCallback("fl_pause",this.fl_pause);
  106.             ExternalInterface.addCallback("fl_play_head",this.fl_play_head);
  107.             ExternalInterface.addCallback("fl_volume",this.fl_volume);
  108.             ExternalInterface.addCallback("fl_mute",this.fl_mute);
  109.             ExternalInterface.call(this.jQuery,"jPlayerFlashEvent",JplayerEvent.JPLAYER_READY,this.extractStatusData(this.commonStatus));
  110.          }
  111.       }
  112.       
  113.       private function setupListeners(param1:Boolean, param2:Boolean) : void
  114.       {
  115.          if(param1 != param2)
  116.          {
  117.             if(param2)
  118.             {
  119.                this.listenToMp3(true);
  120.                this.listenToMp4(false);
  121.             }
  122.             else
  123.             {
  124.                this.listenToMp3(false);
  125.                this.listenToMp4(true);
  126.             }
  127.          }
  128.       }
  129.       
  130.       private function listenToMp3(param1:Boolean) : void
  131.       {
  132.          if(param1)
  133.          {
  134.             this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_ERROR,this.jPlayerFlashEvent);
  135.             this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_PROGRESS,this.jPlayerFlashEvent);
  136.             this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_TIMEUPDATE,this.jPlayerFlashEvent);
  137.             this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_ENDED,this.jPlayerFlashEvent);
  138.             this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_PLAY,this.jPlayerFlashEvent);
  139.             this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_PAUSE,this.jPlayerFlashEvent);
  140.             this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_LOADSTART,this.jPlayerFlashEvent);
  141.             this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_SEEKING,this.jPlayerFlashEvent);
  142.             this.myMp3Player.addEventListener(JplayerEvent.JPLAYER_SEEKED,this.jPlayerFlashEvent);
  143.          }
  144.          else
  145.          {
  146.             this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_ERROR,this.jPlayerFlashEvent);
  147.             this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_PROGRESS,this.jPlayerFlashEvent);
  148.             this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_TIMEUPDATE,this.jPlayerFlashEvent);
  149.             this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_ENDED,this.jPlayerFlashEvent);
  150.             this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_PLAY,this.jPlayerFlashEvent);
  151.             this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_PAUSE,this.jPlayerFlashEvent);
  152.             this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_LOADSTART,this.jPlayerFlashEvent);
  153.             this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_SEEKING,this.jPlayerFlashEvent);
  154.             this.myMp3Player.removeEventListener(JplayerEvent.JPLAYER_SEEKED,this.jPlayerFlashEvent);
  155.          }
  156.       }
  157.       
  158.       private function listenToMp4(param1:Boolean) : void
  159.       {
  160.          if(param1)
  161.          {
  162.             this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_ERROR,this.jPlayerFlashEvent);
  163.             this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_PROGRESS,this.jPlayerFlashEvent);
  164.             this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_TIMEUPDATE,this.jPlayerFlashEvent);
  165.             this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_ENDED,this.jPlayerFlashEvent);
  166.             this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_PLAY,this.jPlayerFlashEvent);
  167.             this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_PAUSE,this.jPlayerFlashEvent);
  168.             this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_LOADSTART,this.jPlayerFlashEvent);
  169.             this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_SEEKING,this.jPlayerFlashEvent);
  170.             this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_SEEKED,this.jPlayerFlashEvent);
  171.             this.myMp4Player.addEventListener(JplayerEvent.JPLAYER_LOADEDMETADATA,this.jPlayerMetaDataHandler);
  172.          }
  173.          else
  174.          {
  175.             this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_ERROR,this.jPlayerFlashEvent);
  176.             this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_PROGRESS,this.jPlayerFlashEvent);
  177.             this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_TIMEUPDATE,this.jPlayerFlashEvent);
  178.             this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_ENDED,this.jPlayerFlashEvent);
  179.             this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_PLAY,this.jPlayerFlashEvent);
  180.             this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_PAUSE,this.jPlayerFlashEvent);
  181.             this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_LOADSTART,this.jPlayerFlashEvent);
  182.             this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_SEEKING,this.jPlayerFlashEvent);
  183.             this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_SEEKED,this.jPlayerFlashEvent);
  184.             this.myMp4Player.removeEventListener(JplayerEvent.JPLAYER_LOADEDMETADATA,this.jPlayerMetaDataHandler);
  185.          }
  186.       }
  187.       
  188.       private function fl_setAudio_mp3(param1:String) : Boolean
  189.       {
  190.          if(param1 != null)
  191.          {
  192.             this.log("fl_setAudio_mp3: " + param1);
  193.             this.setupListeners(this.isMp3,true);
  194.             this.isMp3 = true;
  195.             this.isVideo = false;
  196.             this.myMp4Player.clearFile();
  197.             this.myMp3Player.setFile(param1);
  198.             return true;
  199.          }
  200.          this.log("fl_setAudio_mp3: null");
  201.          return false;
  202.       }
  203.       
  204.       private function fl_setAudio_m4a(param1:String) : Boolean
  205.       {
  206.          if(param1 != null)
  207.          {
  208.             this.log("fl_setAudio_m4a: " + param1);
  209.             this.setupListeners(this.isMp3,false);
  210.             this.isMp3 = false;
  211.             this.isVideo = false;
  212.             this.myMp3Player.clearFile();
  213.             this.myMp4Player.setFile(param1);
  214.             return true;
  215.          }
  216.          this.log("fl_setAudio_m4a: null");
  217.          return false;
  218.       }
  219.       
  220.       private function fl_setVideo_m4v(param1:String) : Boolean
  221.       {
  222.          if(param1 != null)
  223.          {
  224.             this.log("fl_setVideo_m4v: " + param1);
  225.             this.setupListeners(this.isMp3,false);
  226.             this.isMp3 = false;
  227.             this.isVideo = true;
  228.             this.myMp3Player.clearFile();
  229.             this.myMp4Player.setFile(param1);
  230.             return true;
  231.          }
  232.          this.log("fl_setVideo_m4v: null");
  233.          return false;
  234.       }
  235.       
  236.       private function fl_clearMedia() : void
  237.       {
  238.          this.log("clearMedia.");
  239.          this.myMp3Player.clearFile();
  240.          this.myMp4Player.clearFile();
  241.       }
  242.       
  243.       private function fl_load() : Boolean
  244.       {
  245.          this.log("load.");
  246.          if(this.isMp3)
  247.          {
  248.             return this.myMp3Player.load();
  249.          }
  250.          return this.myMp4Player.load();
  251.       }
  252.       
  253.       private function fl_play(param1:Number = NaN) : Boolean
  254.       {
  255.          this.log("play: time = " + param1);
  256.          if(this.isMp3)
  257.          {
  258.             return this.myMp3Player.play(param1 * 1000);
  259.          }
  260.          return this.myMp4Player.play(param1 * 1000);
  261.       }
  262.       
  263.       private function fl_pause(param1:Number = NaN) : Boolean
  264.       {
  265.          this.log("pause: time = " + param1);
  266.          if(this.isMp3)
  267.          {
  268.             return this.myMp3Player.pause(param1 * 1000);
  269.          }
  270.          return this.myMp4Player.pause(param1 * 1000);
  271.       }
  272.       
  273.       private function fl_play_head(param1:Number) : Boolean
  274.       {
  275.          this.log("play_head: " + param1 + "%");
  276.          if(this.isMp3)
  277.          {
  278.             return this.myMp3Player.playHead(param1);
  279.          }
  280.          return this.myMp4Player.playHead(param1);
  281.       }
  282.       
  283.       private function fl_volume(param1:Number) : void
  284.       {
  285.          this.log("volume: " + param1);
  286.          this.commonStatus.volume = param1;
  287.          if(!this.commonStatus.muted)
  288.          {
  289.             this.myMp3Player.setVolume(param1);
  290.             this.myMp4Player.setVolume(param1);
  291.          }
  292.       }
  293.       
  294.       private function fl_mute(param1:Boolean) : void
  295.       {
  296.          this.log("mute: " + param1);
  297.          this.commonStatus.muted = param1;
  298.          if(param1)
  299.          {
  300.             this.myMp3Player.setVolume(0);
  301.             this.myMp4Player.setVolume(0);
  302.          }
  303.          else
  304.          {
  305.             this.myMp3Player.setVolume(this.commonStatus.volume);
  306.             this.myMp4Player.setVolume(this.commonStatus.volume);
  307.          }
  308.       }
  309.       
  310.       private function jPlayerFlashEvent(param1:JplayerEvent) : void
  311.       {
  312.          this.log("jPlayer Flash Event: " + param1.type + ": " + param1.target);
  313.          if(ExternalInterface.available)
  314.          {
  315.             ExternalInterface.call(this.jQuery,"jPlayerFlashEvent",param1.type,this.extractStatusData(param1.data));
  316.          }
  317.       }
  318.       
  319.       private function extractStatusData(param1:JplayerStatus) : Object
  320.       {
  321.          var _loc2_:Object = {
  322.             "version":JplayerStatus.VERSION,
  323.             "src":param1.src,
  324.             "paused":!param1.isPlaying,
  325.             "srcSet":param1.srcSet,
  326.             "seekPercent":param1.seekPercent,
  327.             "currentPercentRelative":param1.currentPercentRelative,
  328.             "currentPercentAbsolute":param1.currentPercentAbsolute,
  329.             "currentTime":param1.currentTime / 1000,
  330.             "duration":param1.duration / 1000,
  331.             "volume":this.commonStatus.volume,
  332.             "muted":this.commonStatus.muted
  333.          };
  334.          this.log("extractStatusData: sp=" + _loc2_.seekPercent + " cpr=" + _loc2_.currentPercentRelative + " cpa=" + _loc2_.currentPercentAbsolute + " ct=" + _loc2_.currentTime + " d=" + _loc2_.duration);
  335.          return _loc2_;
  336.       }
  337.       
  338.       private function jPlayerMetaDataHandler(param1:JplayerEvent) : void
  339.       {
  340.          this.log("jPlayerMetaDataHandler:" + param1.target);
  341.          if(ExternalInterface.available)
  342.          {
  343.             this.resizeHandler(new Event(Event.RESIZE));
  344.             ExternalInterface.call(this.jQuery,"jPlayerFlashEvent",param1.type,this.extractStatusData(param1.data));
  345.          }
  346.       }
  347.       
  348.       private function resizeHandler(param1:Event) : void
  349.       {
  350.          var _loc6_:Number = NaN;
  351.          var _loc7_:Number = NaN;
  352.          this.log("resizeHandler: stageWidth = " + stage.stageWidth + " | stageHeight = " + stage.stageHeight);
  353.          var _loc2_:Number = 0;
  354.          var _loc3_:Number = 0;
  355.          var _loc4_:Number = 0;
  356.          var _loc5_:Number = 0;
  357.          if(stage.stageWidth > 0 && stage.stageHeight > 0 && this.myMp4Player.myVideo.width > 0 && this.myMp4Player.myVideo.height > 0)
  358.          {
  359.             _loc6_ = stage.stageWidth / stage.stageHeight;
  360.             _loc7_ = this.myMp4Player.myVideo.width / this.myMp4Player.myVideo.height;
  361.             if(_loc6_ < _loc7_)
  362.             {
  363.                _loc4_ = stage.stageWidth;
  364.                _loc5_ = stage.stageWidth / _loc7_;
  365.                _loc2_ = 0;
  366.                _loc3_ = (stage.stageHeight - _loc5_) / 2;
  367.             }
  368.             else
  369.             {
  370.                _loc4_ = stage.stageHeight * _loc7_;
  371.                _loc5_ = stage.stageHeight;
  372.                _loc2_ = (stage.stageWidth - _loc4_) / 2;
  373.                _loc3_ = 0;
  374.             }
  375.             this.resizeEntity(this.myMp4Player,_loc2_,_loc3_,_loc4_,_loc5_);
  376.          }
  377.          if(this.debug && stage.stageWidth > 20 && stage.stageHeight > 20)
  378.          {
  379.             this.txLog.width = stage.stageWidth - 10;
  380.             this.txLog.height = stage.stageHeight - 10;
  381.          }
  382.       }
  383.       
  384.       private function resizeEntity(param1:Sprite, param2:Number, param3:Number, param4:Number, param5:Number) : void
  385.       {
  386.          param1.x = param2;
  387.          param1.y = param3;
  388.          param1.width = param4;
  389.          param1.height = param5;
  390.       }
  391.       
  392.       private function clickHandler(param1:MouseEvent) : void
  393.       {
  394.          if(this.isMp3)
  395.          {
  396.             this.jPlayerFlashEvent(new JplayerEvent(JplayerEvent.JPLAYER_CLICK,this.myMp3Player.myStatus,"click"));
  397.          }
  398.          else
  399.          {
  400.             this.jPlayerFlashEvent(new JplayerEvent(JplayerEvent.JPLAYER_CLICK,this.myMp4Player.myStatus,"click"));
  401.          }
  402.       }
  403.       
  404.       private function menuSelectHandler_jPlayer(param1:ContextMenuEvent) : void
  405.       {
  406.          navigateToURL(new URLRequest("http://jplayer.org/"),"_blank");
  407.       }
  408.       
  409.       private function menuSelectHandler_happyworm(param1:ContextMenuEvent) : void
  410.       {
  411.          navigateToURL(new URLRequest("http://happyworm.com/"),"_blank");
  412.       }
  413.       
  414.       private function log(param1:String) : void
  415.       {
  416.          if(this.debug)
  417.          {
  418.             this.txLog.text = param1 + "\n" + this.txLog.text;
  419.          }
  420.       }
  421.       
  422.       private function debugMsgHandler(param1:JplayerEvent) : void
  423.       {
  424.          this.log(param1.msg);
  425.       }
  426.       
  427.       private function keyboardHandler(param1:KeyboardEvent) : void
  428.       {
  429.          this.log("keyboardHandler: e.keyCode = " + param1.keyCode);
  430.          switch(param1.keyCode)
  431.          {
  432.             case 68:
  433.                this.txLog.visible = !this.txLog.visible;
  434.                this.log("Toggled log display: " + this.txLog.visible);
  435.                break;
  436.             case 76:
  437.                if(param1.ctrlKey && param1.shiftKey)
  438.                {
  439.                   this.txLog.text = "Cleared log.";
  440.                }
  441.          }
  442.       }
  443.    }
  444. }
  445.  
  446.